home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 176-200 / scopedisk191 / coreeye / x.asm < prev    next >
Assembly Source File  |  1995-03-19  |  45KB  |  1,825 lines

  1. ********************************************************************************
  2. *                   CoreEye by MC68                       *
  3. *       If you find any bugs in the program please let me know.           *
  4. *               Write to the following address:                   *
  5. *                Andrzej Fien          Finished: 14.09.1990 *
  6. *                ul.Turkienicza 17/26                   *
  7. *                   35-010 Rzeszow                       *
  8. *                   POLAND                       *
  9. ********************************************************************************
  10.  
  11. OpenLibrary        EQU        -552        ;(libratyName,version)(A1,D0)
  12. CloseLibrary        EQU        -414        ;(library)(A1)
  13. GetMsg            EQU        -372        ;(port)(A0)
  14. ReplyMsg        EQU        -378        ;(message)(A1)
  15. FindTask        EQU        -294        ;(name)(A1)
  16.  
  17. Open            EQU        -30        ;(name,accessMode)(D1-D2)
  18. Close            EQU        -36        ;(file)(D1)
  19. Read            EQU        -42        ;(file,buffer,length)(D1-D3)
  20. Write            EQU        -48        ;(file,buffer,length)(D1-D3)
  21. Lock            EQU        -84        ;(name,type)(D1-D2)
  22. UnLock            EQU        -90        ;(lock)(D1)
  23. Examine            EQU        -102        ;(lock,fileInfoBlock)(D1-D2)
  24. ExNext            EQU        -108        ;(lock,fileInfoBlock)(D1-D2)
  25. Delay            EQU        -198        ;(timeout)(D1)
  26.  
  27. OpenWindow        EQU        -204        ;(OWargs)(A0)
  28. CloseWindow        EQU        -72        ;(Window)(A0)
  29. SetMenuStrip        EQU        -264        ;(Window,Menu)(A0-A1)
  30. ClearMenuStrip        EQU        -54        ;(Window)(A0)
  31. WindowToBack        EQU        -306        ;(Window)(A0)
  32. WindowToFront        EQU        -312        ;(Window)(A0)
  33. WBenchToFront        EQU        -342        ;()
  34. RefreshGadgets        EQU        -222        ;(Gadgets,Window,Req)(A0-A2)
  35. ActivateGadget        EQU        -462        ;(Gadgets,Window,Req)(A0-A2)
  36. ModifyProp        EQU        -156        ;(Gadget,Window,Req,Flags,HPos,VPos,HBody,VBody)(A0-A2,D0-D4)
  37. AllocRemember        EQU        -396        ;(RememberKey,Size,Flags)(A0,D0-D1)
  38. FreeRemember        EQU        -408        ;(RememberKey,ReallyForget)(A0,D0)
  39.  
  40. RectFill        EQU        -306        ;(RastPort,xl,yl,xu,yu)(A1,D0-D3)
  41. SetAPen            EQU        -342        ;(RastPort,pen)(A1,D0)
  42. SetBPen            EQU        -348        ;(RastPort,pen)(A1,D0)
  43. SetDrMd            EQU        -354        ;(RastPort,drawMode)(A1,D0)
  44. BltTemplate        EQU        -36        ;(source,srcX,srcModulo,RastPort,destX,destY,sizeX,sizeY)(A0,D0-D1,A1,D2-D5)
  45. WaitBlit        EQU        -228        ;()
  46.  
  47. *            stack frame map
  48. Flags            EQU        -60
  49. WhichFile        EQU        -59
  50. NumberFiles        EQU        -58
  51. FromFile        EQU        -57
  52. ClickCounter        EQU        -56
  53. ByteMode        EQU        -55
  54. SaveLock        EQU        -52
  55. SaveLength        EQU        -48
  56. WBMessage        EQU        -44
  57. PublicMemory        EQU        -40
  58. ChipMem            EQU        -36
  59. RP2            EQU        -32
  60. WW2            EQU        -28
  61. RP1            EQU        -24
  62. WW1            EQU        -20
  63. IntBase            EQU        -16
  64. GfxBase            EQU        -12
  65. DosBase            EQU        -8
  66. Pointer            EQU        -4
  67.  
  68. ******************** Code ******************************************************
  69.  
  70. *Begin            LINK        A4,#-60
  71.             CLR.L        Pointer(A4)
  72.             CLR.B        Flags(A4)
  73. *            MOVE.L        4.W,A6
  74. *            LEA        DosName(PC),A1
  75. *            MOVEQ        #0,D0
  76. *            JSR        OpenLibrary(A6)
  77. *            MOVE.L        D0,DosBase(A4)
  78. *            BEQ.W        GetOut
  79.             LEA        GfxName(PC),A1
  80.             MOVEQ        #0,D0
  81.             JSR        OpenLibrary(A6)
  82.             MOVE.L        D0,GfxBase(A4)
  83.             BEQ.W        ToRTS
  84.             LEA        IntName(PC),A1
  85.             MOVEQ        #0,D0
  86.             JSR        OpenLibrary(A6)
  87.             MOVE.L        D0,IntBase(A4)
  88.             BEQ.W        CloseGfx
  89.             MOVE.L        D0,A6
  90.             LEA        RememberKey(PC),A0
  91.             MOVE.L        #3464,D0
  92.             MOVEQ        #1,D1
  93.             JSR        AllocRemember(A6)
  94.             MOVE.L        D0,PublicMemory(A4)
  95.             BNE.S        PublicAllocated
  96.             BSR.W        Insufficient
  97.             BRA.W        CloseAllLibs
  98. PublicAllocated        LEA        MainWindow(PC),A0
  99.             JSR        OpenWindow(A6)
  100.             MOVE.L        D0,WW1(A4)
  101.             BNE.S        MainWWOpened
  102.             BSR.W        Insufficient
  103.             BRA.W        FreeMemory
  104. MainWWOpened        MOVE.L        WW1(A4),A0
  105.             MOVE.L        50(A0),RP1(A4)
  106.             LEA        MenuMemory(PC),A1
  107.             JSR        SetMenuStrip(A6)
  108.             JSR        WBenchToFront(A6)
  109.  
  110. MainLoop        BSR.W        Show
  111.             MOVE.L        WW1(A4),A0
  112.             MOVE.L        86(A0),A0
  113.             MOVE.L        4.W,A6
  114.             JSR        GetMsg(A6)
  115.             TST.L        D0
  116.             BEQ.S        MainLoop
  117.             MOVE.L        D0,A1
  118.             MOVE.L        20(A1),D2
  119.             MOVE.B        25(A1),D3
  120.             MOVE.L        28(A1),D4
  121.             JSR        ReplyMsg(A6)
  122.             CMPI.B        #$20,D2
  123.             BEQ.W        ArrowPress
  124.             CMPI.B        #$40,D2
  125.             BEQ.W        WWToBF
  126.             BTST        #21,D2
  127.             BNE.W        RawKeys
  128.             CMPI.B        #8,D2
  129.             BEQ.W        ClickMouse
  130.  
  131.             MOVEQ        #20-1,D1
  132.             CMPI.W        #$100,D2
  133.             BEQ.S        SearchForItem
  134.             MOVEQ        #6-1,D1
  135. SearchForItem        LEA        ItemTable(PC),A0
  136.             MOVEQ        #0,D0
  137. NextKey            CMP.B        (A0)+,D3
  138.             BEQ.S        FoundKey
  139.             ADDQ.B        #1,D0
  140.             DBF        D1,NextKey
  141.             BRA.S        MainLoop
  142. FoundKey        LSL.W        #1,D0
  143.             MOVE.W        JumpTable(PC,D0.W),D0
  144.             MOVE.L        Pointer(A4),D1
  145.             PEA        MainLoop(PC)
  146.             JMP        JumpTable(PC,D0.W)
  147.  
  148. RawKeys            CMPI.B        #13,D3
  149.             BNE.S        WriteKey
  150.             MOVE.L        WW1(A4),A1
  151. ChgMode            MOVE.L        #$568,82(A1)
  152.             LEA        Line+24(PC),A0
  153.             MOVE.L        #'view',(A0)
  154.             BRA.W        MainLoop
  155. WriteKey        MOVE.L        Pointer(A4),A0
  156.             MOVE.B        D3,(A0)+
  157.             MOVE.L        A0,Pointer(A4)
  158.             BRA.W        MainLoop
  159.  
  160. ItemTable        DC.B        $4F,$4E,$4C,$4D,$44,$43,0,$20,$40,$60,$80,$A0,1,$21,$41,2,$22,$42,$62,$82
  161. JumpTable        DC.W        Left-JumpTable
  162.             DC.W        Right-JumpTable
  163.             DC.W        Up-JumpTable
  164.             DC.W        Down-JumpTable
  165.             DC.W        Fire-JumpTable
  166.             DC.W        Fire-JumpTable
  167.             DC.W        Load-JumpTable
  168.             DC.W        Save-JumpTable
  169.             DC.W        Modify-JumpTable
  170.             DC.W        FillMemory-JumpTable
  171.             DC.W        MoveMemory-JumpTable
  172.             DC.W        Quit-JumpTable
  173.             DC.W        SetAddress-JumpTable
  174.             DC.W        PgUp-JumpTable
  175.             DC.W        PgDn-JumpTable
  176.             DC.W        SearchString-JumpTable
  177.             DC.W        SearchWord-JumpTable
  178.             DC.W        SearchLongWord-JumpTable
  179.             DC.W        SearchTask-JumpTable
  180.             DC.W        RepeatSearch-JumpTable
  181.  
  182. ClickUp            MOVE.L        Pointer(A4),D1
  183.             BSR.W        PgUp
  184.             BSR.W        Show
  185.             BTST        #7,ArrowUpGG+13(PC)
  186.             BEQ.W        MainLoop
  187.             MOVE.L        DosBase(A4),A6
  188.             MOVEQ        #10,D1
  189.             JSR        Delay(A6)
  190. Loop_2            BTST        #7,ArrowUpGG+13(PC)
  191.             BEQ.W        MainLoop
  192.             MOVE.L        Pointer(A4),D1
  193.             BSR.W        PgUp
  194.             BSR.W        Show
  195.             BRA.S        Loop_2
  196.  
  197. ArrowPress        MOVE.L        Pointer(A4),D1
  198.             CMP.L        DragGG(PC),D4
  199.             BEQ.S        ClickUp
  200.             CMP.L        ArrowDownGG(PC),D4
  201.             BEQ.S        ChangeMode
  202.             CMP.L        ArrowUpGG(PC),D4
  203.             BNE.W        MainLoop
  204.             BSR.W        PgDn
  205.             BSR.W        Show
  206.             BTST        #7,ArrowDownGG+13(PC)
  207.             BEQ.W        MainLoop
  208.             MOVE.L        DosBase(A4),A6
  209.             MOVEQ        #10,D1
  210.             JSR        Delay(A6)
  211. Loop_1            BTST        #7,ArrowDownGG+13(PC)
  212.             BEQ.W        MainLoop
  213.             MOVE.L        Pointer(A4),D1
  214.             BSR.W        PgDn
  215.             BSR.W        Show
  216.             BRA.S        Loop_1
  217.  
  218. ChangeMode        MOVE.L        WW1(A4),A1
  219.             BTST        #5,83(A1)
  220.             BNE.W        ChgMode
  221.             PEA        MainLoop(PC)
  222.  
  223. Fire            MOVE.L        WW1(A4),A1
  224.             MOVE.L        #$200168,82(A1)
  225.             LEA        Line+24(PC),A0
  226.             MOVE.L        #'edit',(A0)
  227.             RTS
  228.  
  229. WWToBF            MOVE.L        WW1(A4),A0
  230.             MOVE.L        IntBase(A4),A6
  231.             CMP.L        WWFrontGG(PC),D4
  232.             BEQ.S        WWToBack
  233.             CMP.L        MainWindow+18(PC),D4
  234.             BNE.S        ToMainLoop1
  235.             JSR        WindowToFront(A6)
  236. ToMainLoop1        BRA.W        MainLoop
  237. WWToBack        JSR        WindowToBack(A6)
  238.             BRA.S        ToMainLoop1
  239.  
  240. ClickMouse        BTST        #6,$BFE001
  241.             BNE.S        ToMainLoop1
  242.             MOVEQ        #0,D0
  243.             MOVEQ        #0,D1
  244.             MOVE.L        WW1(A4),A0
  245.             MOVE.W        108(A0),D0
  246.             MOVE.W        110(A0),D1
  247.             SUBI.W        #12,D0
  248.             CMPI.W        #430,D0
  249.             BCC.S        ExitClick
  250.             SUBI.W        #61,D1
  251.             CMPI.W        #128,D1
  252.             BCC.S        ExitClick
  253.             CMPI.W        #303,D0
  254.             BCC.S        AsciiPart
  255.             CMPI.W        #279,D0
  256.             BCC.S        ExitClick
  257.             MOVE.L        D0,D2
  258.             DIVU        #72,D2
  259.             LSL.W        #3,D2
  260.             SUB.W        D2,D0
  261.             LSR.W        #4,D0
  262.             BRA.S        ForHex
  263. AsciiPart        SUBI.W        #303,D0
  264.             LSR.W        #3,D0
  265. ForHex            LSR.W        #3,D1
  266.             LSL.B        #4,D1
  267.             OR.B        D0,D1
  268.             MOVE.B        D1,Pointer+3(A4)
  269.             BSR.W        Show
  270. ExitClick        BTST        #6,$BFE001
  271.             BEQ.S        ClickMouse
  272.             BRA.S        ToMainLoop1
  273.  
  274. ******************** Load and Save subroutines *********************************
  275.  
  276. Load            LEA        TextLoad(PC),A1
  277.             SUBA.L        A2,A2
  278.             MOVEQ        #7,D0
  279.             BSR.W        LoadSave
  280.             MOVE.L        A5,D1
  281.             BEQ.W        ExitLS
  282.             MOVE.L        #1005,D2
  283.             MOVE.L        DosBase(A4),A6
  284.             JSR        Open(A6)
  285.             MOVE.L        D0,D1
  286.             BNE.S        ReadFile
  287. BadFile            LEA        FileDoesNotExist(PC),A1
  288.             BSR.W        Request
  289.             BRA.S        RestoreLength
  290. ReadFile        MOVE.L        D0,-(A7)
  291.             MOVE.L        Pointer(A4),D2
  292.             MOVE.L        #901120,D3
  293.             JSR        Read(A6)
  294.             MOVE.L        (A7)+,D1
  295.             JSR        Close(A6)
  296. RestoreLength        MOVE.L        SaveLength(A4),A1
  297.             CLR.B        (A1)
  298. ExitLS            SUBA.L        A5,A5
  299.             RTS
  300.  
  301. Save            LEA        TextSave(PC),A1
  302.             LEA        LengthGadget(PC),A2
  303.             MOVEQ        #10,D0
  304.             BSR.W        LoadSave
  305. DecToHex        LEA        SaveLengthBuffer(PC),A0
  306.             MOVEQ        #0,D7
  307.             MOVEQ        #0,D1
  308.             TST.B        (A0)
  309.             BEQ.S        RestoreLength
  310. ConvertToHex        MOVE.B        (A0)+,D1
  311.             BEQ.S        EndBufferDec
  312.             SUBI.B        #'0',D1
  313.             CMPI.B        #9,D1
  314.             BHI.S        RestoreLength
  315.             MULU        #10,D7
  316.             ADD.L        D1,D7
  317.             BRA.S        ConvertToHex
  318. EndBufferDec        MOVE.L        A5,D1
  319.             BEQ.W        ExitLS
  320.             MOVE.L        #1006,D2
  321.             MOVE.L        DosBase(A4),A6
  322.             JSR        Open(A6)
  323.             MOVE.L        D0,D1
  324.             BEQ.W        BadFile
  325.             MOVE.L        D0,-(A7)
  326.             MOVE.L        Pointer(A4),D2
  327.             MOVE.L        D7,D3
  328.             JSR        Write(A6)
  329.             MOVE.L        (A7)+,D1
  330.             JSR        Close(A6)
  331.             BRA.W        RestoreLength
  332.  
  333. LoadSave        LEA        LoadSaveWW(PC),A0
  334.             MOVE.L        A1,26(A0)
  335.             MOVE.L        A2,FileGadget-LoadSaveWW(A0)
  336.             MOVE.B        D0,LoadBorder1-LoadSaveWW+7(A0)
  337.             MOVE.L        IntBase(A4),A6
  338.             JSR        OpenWindow(A6)
  339.             MOVE.L        D0,WW2(A4)
  340.             BNE.S        LoadSaveWWOpened
  341.             BSR.W        Insufficient
  342.             BRA.W        ExitSearch
  343. LoadSaveWWOpened    MOVE.L        D0,A0
  344.             MOVE.L        50(A0),RP2(A4)
  345.             TST.B        Flags(A4)
  346.             BEQ.S        Locking
  347.             BSR.W        PrintFiles
  348.             LEA        FileGadget(PC),A0
  349.             CLR.W        FileSInfo-FileGadget+8(A0)
  350.             BSR.W        ActivStringGG
  351.             BRA.W        LoadSaveLoop
  352. Locking            MOVE.L        #$00FF0000,Flags(A4)
  353.             LEA        PropGadget(PC),A0
  354.             MOVE.L        WW2(A4),A1
  355.             SUBA.L        A2,A2
  356.             MOVEQ        #5,D0
  357.             MOVEQ        #0,D2
  358.             MOVEQ        #-1,D4
  359.             MOVE.L        IntBase(A4),A6
  360.             JSR        ModifyProp(A6)
  361.             MOVEQ        #0,D0
  362.             MOVE.L        RP2(A4),A1
  363.             MOVE.L        GfxBase(A4),A6
  364.             JSR        SetAPen(A6)
  365.             MOVEQ        #8,D0
  366.             MOVEQ        #30,D1
  367.             MOVE.W        #247,D2
  368.             MOVEQ        #82,D3
  369.             JSR        RectFill(A6)
  370.             MOVE.L        PublicMemory(A4),A5
  371.             MOVE.W        #1600-1,D0
  372. FillSpaces        MOVE.W        #'  ',(A5)+
  373.             DBF        D0,FillSpaces
  374.             LEA        DirBuffer(PC),A0
  375.             MOVE.L        A0,D1
  376.             MOVEQ        #-2,D2
  377.             MOVE.L        DosBase(A4),A6
  378.             JSR        Lock(A6)
  379.             MOVE.L        D0,SaveLock(A4)
  380.             BNE.S        LockIsOk
  381. BadDevice        LEA        RequestDevice(PC),A1
  382.             BSR.W        Request
  383.             LEA        DirGadget(PC),A0
  384.             CLR.W        DirSInfo-DirGadget+8(A0)
  385.             BSR.W        ActivStringGG
  386.             NOT.B        Flags(A4)
  387.             BRA.S        LoadSaveLoop
  388. LockIsOk        MOVE.L        D0,D1
  389.             MOVE.L        A5,D2
  390.             JSR        Examine(A6)
  391.             TST.L        4(A5)
  392.             BMI.S        BadDevice
  393. LoadSaveLoop        BSR.W        Show
  394.             TST.B        ClickCounter(A4)
  395.             BEQ.S        CounterNull
  396.             SUBQ.B        #1,ClickCounter(A4)
  397. CounterNull        TST.B        Flags(A4)
  398.             BNE.W        NoMoreFiles
  399.             MOVE.L        SaveLock(A4),D1
  400.             MOVE.L        PublicMemory(A4),A5
  401.             LEA        3200(A5),A0
  402.             MOVE.L        A0,D2
  403.             MOVE.L        DosBase(A4),A6
  404.             JSR        ExNext(A6)
  405.             TST.L        D0
  406.             BNE.S        MoveFile
  407.             NOT.B        Flags(A4)
  408.             BSR.W        PrintFiles
  409.             MOVE.L        #$5FFFA,D4
  410.             MOVE.B        NumberFiles(A4),D1
  411.             BEQ.S        LessThan6
  412.             EXT.W        D1
  413.             DIVU        D1,D4
  414.             BVC.S        Corect
  415. LessThan6        MOVEQ        #-1,D4
  416. Corect            MOVEQ        #0,D2
  417.             MOVEQ        #5,D0
  418.             LEA        PropGadget(PC),A0
  419.             MOVE.L        WW2(A4),A1
  420.             SUBA.L        A2,A2
  421.             MOVE.L        IntBase(A4),A6
  422.             JSR        ModifyProp(A6)
  423.             LEA        FileGadget(PC),A0
  424.             CLR.W        FileSInfo-FileGadget+8(A0)
  425.             BSR.W        ActivStringGG
  426.             BRA.S        NoMoreFiles
  427. MoveFile        MOVEQ        #3,D2
  428.             LEA        3204(A5),A0
  429.             TST.L        (A0)+
  430.             BMI.S        ItsFile
  431.             MOVEQ        #2,D2
  432. ItsFile            MOVE.B        NumberFiles(A4),D1
  433.             EXT.W        D1
  434.             LSL.W        #5,D1
  435.             LEA        0(A5,D1.W),A5
  436.             MOVE.B        D2,(A5)+
  437.             LEA        1(A5),A1
  438.             MOVEQ        #0,D2
  439. CopyFileName        TST.B        (A0)
  440.             BEQ.S        EndFileName
  441.             ADDQ.B        #1,D2
  442.             MOVE.B        (A0)+,(A1)+
  443.             BRA.S        CopyFileName
  444. EndFileName        MOVE.B        D2,(A5)
  445.             ADDQ.B        #1,NumberFiles(A4)
  446. NoMoreFiles        MOVE.L        WW2(A4),A0
  447.             MOVE.L        86(A0),A0
  448.             MOVE.L        4.W,A6
  449.             JSR        GetMsg(A6)
  450.             TST.L        D0
  451.             BEQ.W        LoadSaveLoop
  452.             MOVE.L        D0,A1
  453.             MOVE.W        22(A1),D2
  454.             MOVE.L        28(A1),D3
  455.             JSR        ReplyMsg(A6)
  456.             CMPI.B        #$40,D2
  457.             BEQ.W        GadgetUnPress
  458.             CMPI.B        #$20,D2
  459.             BEQ.W        GadgetPress
  460.  
  461. ClickFile        BTST        #6,$BFE001
  462.             BNE.S        ToLoadSaveLoop1
  463.             MOVE.L        WW2(A4),A0
  464.             MOVE.W        108(A0),D0
  465.             MOVE.W        110(A0),D1
  466.             CMPI.W        #242,D0
  467.             BCC.S        ToLoadSaveLoop1
  468.             SUBI.W        #18,D1
  469.             CMPI.W        #54,D1
  470.             BCC.S        ToLoadSaveLoop1
  471.             EXT.L        D1
  472.             DIVU        #9,D1
  473.             ADD.B        FromFile(A4),D1
  474.             MOVE.B        D1,D3
  475.             LSL.W        #5,D1
  476.             MOVE.L        PublicMemory(A4),A5
  477.             LEA        0(A5,D1.W),A2
  478.             MOVE.B        (A2)+,D0
  479.             MOVE.B        (A2)+,D2
  480.             EXT.W        D2
  481.             SUBQ.W        #1,D2
  482.             CMPI.B        #3,D0
  483.             BNE.S        ItIsDirectory
  484. ItIsFile        TST.B        ClickCounter(A4)
  485.             BEQ.S        CounterNull2
  486.             CMP.B        WhichFile(A4),D3
  487.             BEQ.W        PressOk        
  488. CounterNull2        MOVE.B        D3,WhichFile(A4)
  489.             LEA        FileBuffer(PC),A0
  490. MoveFileName        MOVE.B        (A2)+,(A0)+
  491.             DBF        D2,MoveFileName
  492.             CLR.B        (A0)
  493.             LEA        FileGadget(PC),A0
  494.             MOVE.L        WW2(A4),A1
  495.             SUB.L        A2,A2
  496.             MOVE.L        IntBase(A4),A6
  497.             JSR        RefreshGadgets(A6)
  498.             BSR.W        PrintFiles
  499.             MOVE.B        #10,ClickCounter(A4)
  500. ToLoadSaveLoop1        BRA.W        LoadSaveLoop
  501.  
  502. ItIsDirectory        CMPI.B        #2,D0
  503.             BNE.S        ToLoadSaveLoop1
  504.             LEA        DirBuffer(PC),A0
  505.             MOVE.W        DirSInfo+16(PC),D0
  506.             LEA        -1(A0,D0.W),A1
  507.             BEQ.S        DoublePoint
  508.             CMPI.B        #':',(A1)
  509.             BEQ.S        DoublePoint
  510.             CMPI.B        #'/',(A1)+
  511.             BEQ.S        MoveDirName
  512.             MOVE.B        #'/',(A1)
  513. DoublePoint        ADDQ.W        #1,A1
  514. MoveDirName        MOVE.B        (A2)+,(A1)+
  515.             DBF        D2,MoveDirName
  516.             CLR.B        (A1)
  517.  
  518. UnLocking        MOVE.L        SaveLock(A4),D1
  519.             MOVE.L        DosBase(A4),A6
  520.             JSR        UnLock(A6)
  521.             BRA.W        Locking
  522.  
  523. CDParent        LEA        DirBuffer(PC),A0
  524.             MOVE.W        DirSInfo+16(PC),D0
  525.             BEQ.S        ToLoadSaveLoop1
  526.             LEA        -1(A0,D0.W),A1
  527.             CMPI.B        #':',(A1)
  528.             BEQ.S        ToLoadSaveLoop1
  529. CD            CLR.B        (A1)
  530.             CMPA.L        A0,A1
  531.             BEQ.S        UnLocking
  532.             CMPI.B        #':',-(A1)
  533.             BEQ.S        UnLocking
  534.             CMPI.B        #'/',(A1)
  535.             BNE.S        CD
  536.             CLR.B        (A1)
  537.             BRA.S        UnLocking
  538.  
  539. GadgetPress        CMP.L        CancelGadget(PC),D3
  540.             BNE.S        ToLoadSaveLoop2
  541. SliderOn        MOVE.B        NumberFiles(A4),D0
  542.             EXT.W        D0
  543.             SUBQ.W        #6,D0
  544.             BLS.S        ToLoadSaveLoop2
  545.             ADDQ.W        #1,D0
  546.             MOVEQ        #1,D5
  547.             SWAP        D5
  548.             DIVU        D0,D5
  549.             MOVE.L        D5,D0
  550.             SWAP        D0
  551.             ADD.W        D0,D5
  552. SliderLoop        MOVEQ        #0,D2
  553.             MOVE.W        PropInfo+4(PC),D2
  554.             DIVU        D5,D2
  555.             MOVE.B        D2,FromFile(A4)
  556.             BSR.S        PrintFiles
  557.             BTST        #7,PropGadget+13(PC)
  558.             BNE.S        SliderLoop
  559. ToLoadSaveLoop2        BRA.W        LoadSaveLoop
  560.  
  561. PrintFiles        MOVE.L        GfxBase(A4),A6
  562.             MOVE.L        RP2(A4),A1
  563.             MOVE.L        PublicMemory(A4),A5
  564.             MOVEQ        #0,D7
  565.             MOVE.B        FromFile(A4),D6
  566.             EXT.W        D6
  567.             LSL.W        #5,D6
  568.             LEA        0(A5,D6.W),A3
  569.             MOVE.L        #$0008001E,36(A1)
  570. PrintNextFile        MOVEQ        #0,D0
  571.             MOVE.B        (A3)+,D0
  572.             JSR        SetAPen(A6)
  573.             MOVE.B        WhichFile(A4),D6
  574.             SUB.B        FromFile(A4),D6
  575.             CMP.B        D6,D7
  576.             BNE.S        NotThisFile
  577.             MOVEQ        #5,D0
  578.             JSR        SetDrMd(A6)
  579. NotThisFile        ADDQ.W        #1,A3
  580.             MOVEQ        #30,D0
  581.             MOVE.L        D5,-(A7)
  582.             BSR.W        Print
  583.             MOVE.L        (A7)+,D5
  584.             MOVEQ        #1,D0
  585.             JSR        SetDrMd(A6)
  586.             MOVE.W        #8,36(A1)
  587.             ADDI.W        #9,38(A1)
  588.             ADDQ.B        #1,D7
  589.             CMPI.B        #6,D7
  590.             BNE.S        PrintNextFile
  591.             RTS
  592.  
  593. GadgetUnPress        CMP.L        OkGadget(PC),D3
  594.             BEQ.W        UnLocking
  595.             CMP.L        GetdirGadget(PC),D3
  596.             BEQ.W        PressCancel
  597.             CMP.L        PropGadget(PC),D3
  598.             BEQ.W        UnLocking
  599.             CMP.L        DirGadget(PC),D3
  600.             BEQ.S        FileEntered
  601.             CMP.L        ParentGadget(PC),D3
  602.             BEQ.S        PressOk
  603.             CMP.L        FileGadget(PC),D3
  604.             BEQ.S        PressOk
  605.             CMP.L        LoadSaveWW+18(PC),D3
  606.             BEQ.W        CDParent
  607.             CMP.L        DirGadget(PC),D3
  608.             BNE.W        LoadSaveLoop
  609.  
  610. FileEntered        LEA        LengthGadget(PC),A0
  611.             TST.L        FileGadget-LengthGadget(A0)
  612.             BEQ.S        PressOk
  613.             MOVE.L        WW2(A4),A1
  614.             SUBA.L        A2,A2
  615.             MOVE.L        IntBase(A4),A6
  616.             JSR        ActivateGadget(A6)
  617.             BRA.W        LoadSaveLoop
  618.  
  619. PressOk            MOVE.W        FileSInfo+16(PC),D1
  620.             BEQ.S        PressCancel
  621.             LEA        DirBuffer(PC),A5
  622.             MOVE.W        DirSInfo+16(PC),D0
  623.             LEA        0(A5,D0.W),A0
  624.             BEQ.S        AllOk
  625.             CMPI.B        #':',-1(A0)
  626.             BEQ.S        AllOk
  627.             CMPI.B        #'/',-1(A0)
  628.             BEQ.S        AllOk
  629.             MOVE.L        A0,SaveLength(A4)
  630.             MOVE.B        #'/',(A0)+
  631.             BRA.S        AddSlash
  632. AllOk            MOVE.L        A0,SaveLength(A4)
  633. AddSlash        LEA        FileBuffer(PC),A1
  634. MountName        MOVE.B        (A1)+,(A0)+
  635.             DBF        D1,MountName
  636.             BRA.S        Close2ndWW
  637.  
  638. PressCancel        SUBA.L        A5,A5
  639. Close2ndWW        MOVE.L        WW2(A4),A0
  640.             MOVE.L        IntBase(A4),A6
  641.             JMP        CloseWindow(A6)
  642.  
  643. ActivStringGG        MOVE.L        WW2(A4),A1
  644.             MOVE.L        IntBase(A4),A6
  645.             SUBA.L        A2,A2
  646.             JMP        ActivateGadget(A6)
  647.  
  648. ******************** Modify subroutine *****************************************
  649.  
  650. Modify            LEA        ModifyWW(PC),A0
  651.             MOVE.L        IntBase(A4),A6
  652.             JSR        OpenWindow(A6)
  653.             MOVE.L        D0,WW2(A4)
  654.             BEQ.W        Insufficient
  655. ModifyAgain        LEA        ByteGG(PC),A0
  656.             MOVE.L        WW2(A4),A1
  657.             SUBA.L        A2,A2
  658.             CLR.B        ByteBuffer-ByteGG(A0)
  659.             CLR.B        WordBuffer-ByteGG(A0)
  660.             CLR.B        LongBuffer-ByteGG(A0)
  661.             MOVE.L        IntBase(A4),A6
  662.             JSR        RefreshGadgets(A6)
  663.             CMPI.B        #1,ByteMode(A4)
  664.             BEQ.S        ModeWord
  665.             BCC.S        ModeLong
  666. ModeByte        LEA        ByteGG(PC),A0
  667.             BRA.S        RunGG
  668. ModeWord        LEA        WordGG(PC),A0
  669.             BRA.S        RunGG
  670. ModeLong        LEA        LongGG(PC),A0
  671. RunGG            BSR.S        ActivStringGG
  672.  
  673. ModifyLoop        BSR.W        Show
  674.             MOVE.L        WW2(A4),A0
  675.             MOVE.L        86(A0),A0
  676.             MOVE.L        4.W,A6
  677.             JSR        GetMsg(A6)
  678.             TST.L        D0
  679.             BEQ.S        ModifyLoop
  680.             MOVE.L        D0,A1
  681.             MOVE.W        22(A1),D2
  682.             MOVE.L        28(A1),D3
  683.             JSR        ReplyMsg(A6)
  684.             CMPI.W        #$200,D2
  685.             BEQ.W        Close2ndWW
  686.             MOVE.L        Pointer(A4),A1
  687.             CMP.L        ByteGG(PC),D3
  688.             BEQ.S        ItwasWordGG
  689.             BCC.S        ItwasLongGG
  690.             CLR.B        ByteMode(A4)
  691.             LEA        ByteBuffer(PC),A2
  692.             BSR.W        BufferToHex
  693.             BMI.W        Close2ndWW
  694.             MOVE.B        D0,(A1)+
  695.             MOVE.L        A1,Pointer(A4)
  696.             BRA.W        ModifyAgain
  697. ItwasWordGG        MOVE.B        #1,ByteMode(A4)
  698.             LEA        WordBuffer(PC),A2
  699.             BSR.W        BufferToHex
  700.             BMI.W        Close2ndWW
  701.             BTST        #0,Pointer+3(A4)
  702.             BEQ.S        EvenOk
  703. NotParity        BSR.W        Close2ndWW
  704.             LEA        ParityRequest(PC),A1
  705.             BRA.W        Request
  706. EvenOk            MOVE.W        D0,(A1)+
  707.             MOVE.L        A1,Pointer(A4)
  708.             BRA.W        ModifyAgain
  709. ItwasLongGG        MOVE.B        #2,ByteMode(A4)
  710.             LEA        LongBuffer(PC),A2
  711.             BSR.W        BufferToHex
  712.             BMI.W        Close2ndWW
  713.             BTST        #0,Pointer+3(A4)
  714.             BNE.S        NotParity
  715.             MOVE.L        D0,(A1)+
  716.             MOVE.L        A1,Pointer(A4)
  717.             BRA.W        ModifyAgain
  718.  
  719. ******************** Fill and Move block subroutines *************************
  720.  
  721. FillMemory        LEA        TextFill(PC),A1
  722.             LEA        PatternText(PC),A2
  723.             MOVEQ        #3,D0
  724.             BRA.S        FillMove
  725.  
  726. MoveMemory        LEA        TextMove(PC),A1
  727.             LEA        MoveToText(PC),A2
  728.             MOVEQ        #7,D0
  729.  
  730. FillMove        LEA        FillMoveWW(PC),A0
  731.             MOVE.L        A1,26(A0)
  732.             MOVE.L        A2,PatternIText-FillMoveWW+12(A0)
  733.             MOVE.W        D0,PatternSInfo-FillMoveWW+10(A0)
  734.             CLR.B        LengthBuffer-FillMoveWW(A0)
  735.             CLR.L        PatternBuffer-FillMoveWW(A0)
  736.             MOVE.L        IntBase(A4),A6
  737.             JSR        OpenWindow(A6)
  738.             MOVE.L        D0,WW2(A4)
  739.             BEQ.W        Insufficient
  740.             LEA        LengthGG(PC),A0
  741. Activate2nd        BSR.W        ActivStringGG
  742.  
  743. FillMoveLoop        MOVE.L        WW2(A4),A0
  744.             MOVE.L        86(A0),A0
  745.             MOVE.L        4.W,A6
  746.             JSR        GetMsg(A6)
  747.             TST.L        D0
  748.             BEQ.S        FillMoveLoop
  749.             MOVE.L        D0,A1
  750.             MOVE.W        22(A1),D2
  751.             MOVE.L        28(A1),D3
  752.             JSR        ReplyMsg(A6)
  753.             CMPI.W        #$200,D2
  754.             BEQ.W        Close2ndWW
  755.             CMP.L        FillMoveWW+18(PC),D3
  756.             BNE.S        ValuesEntered
  757.             LEA        LengthBuffer(PC),A2
  758.             BSR.W        BufferToHex
  759.             BMI.W        Close2ndWW
  760.             MOVE.L        D0,D7
  761.             LEA        PatternGG(PC),A0
  762.             BRA.S        Activate2nd
  763.  
  764. ValuesEntered        BSR.W        Close2ndWW
  765.             SUBQ.W        #1,D7
  766.             LEA        PatternBuffer(PC),A2
  767.             BSR.W        BufferToHex
  768.             BMI.S        ExitFillMove
  769.             MOVE.L        Pointer(A4),A1
  770.             MOVE.L        D0,A2
  771.             LEA        TextMove(PC),A3
  772.             CMPA.L        FillMoveWW+26(PC),A3
  773.             BEQ.S        Moving
  774. Filling            MOVE.B        D0,(A1)+
  775.             DBF        D7,Filling
  776.             SWAP        D7
  777.             TST.W        D7
  778.             BEQ.S        ExitFillMove
  779.             SUBQ.W        #1,D7
  780. FillLoop1        MOVEQ        #-1,D3
  781. FillLoop2        MOVE.B        D0,(A1)+
  782.             DBF        D3,FillLoop2
  783.             DBF        D7,FillLoop1
  784. ExitFillMove        RTS
  785.  
  786. Moving            CMPA.L        A1,A2
  787.             BEQ.S        ExitFillMove
  788.             BCS.S        MoveHigher
  789.             LEA        1(A1,D7.L),A1
  790.             LEA        1(A2,D7.L),A2
  791. MoveLower        MOVE.B        -(A1),-(A2)
  792.             DBF        D7,MoveLower
  793.             SWAP        D7
  794.             TST.W        D7
  795.             BEQ.S        ExitFillMove
  796.             SUBQ.W        #1,D7
  797. MoveLoop1        MOVEQ        #-1,D1
  798. MoveLoop2        MOVE.B        -(A1),-(A2)
  799.             DBF        D1,MoveLoop2
  800.             DBF        D7,MoveLoop1
  801.             BRA.S        ExitFillMove
  802. MoveHigher        MOVE.B        (A1)+,(A2)+
  803.             DBF        D7,MoveHigher
  804.             SWAP        D7
  805.             TST.W        D7
  806.             BEQ.S        ExitFillMove
  807.             SUBQ.W        #1,D7
  808. MoveLoop3        MOVEQ        #-1,D1
  809. MoveLoop4        MOVE.B        (A1)+,(A2)+
  810.             DBF        D1,MoveLoop4
  811.             DBF        D7,MoveLoop3
  812. ExitMove        RTS
  813.  
  814. ******************** Set address subroutine ************************************
  815.  
  816. SetAddress        LEA        SetAddressWW(PC),A0
  817.             CLR.B        SetAddressBuffer-SetAddressWW(A0)
  818.             MOVE.L        IntBase(A4),A6
  819.             JSR        OpenWindow(A6)
  820.             MOVE.L        D0,WW2(A4)
  821.             BEQ.W        Insufficient
  822.             LEA        SetAddrGG(PC),A0
  823.             BSR.W        ActivStringGG
  824. SetAddressLoop        BSR.W        Show
  825.             MOVE.L        WW2(A4),A0
  826.             MOVE.L        86(A0),A0
  827.             MOVE.L        4.W,A6
  828.             JSR        GetMsg(A6)
  829.             TST.L        D0
  830.             BEQ.S        SetAddressLoop
  831.             MOVE.L        D0,A1
  832.             MOVE.W        22(A1),D2
  833.             JSR        ReplyMsg(A6)
  834.             CMPI.W        #$200,D2
  835.             BSR.W        Close2ndWW
  836.             CMPI.W        #$200,D2
  837.             BEQ.S        ExitMove
  838.             LEA        SetAddressBuffer(PC),A2
  839.             BSR.W        BufferToHex
  840.             BMI.S        ExitMove
  841.             MOVE.L        D0,D1
  842.             BRA.W        TestArea
  843.  
  844. ******************** Moving subroutines ****************************************
  845.  
  846. PgUp            SUBI.L        #$100,D1
  847.             BRA.S        TestArea
  848. PgDn            ADDI.L        #$100,D1
  849.             BRA.S        TestArea
  850. Left            SUBQ.L        #1,D1
  851.             BRA.S        TestArea
  852. Right            ADDQ.L        #1,D1
  853.             BRA.S        TestArea
  854. Up            SUBI.L        #$10,D1
  855.             BRA.S        TestArea
  856. Down            ADDI.L        #$10,D1
  857.  
  858. TestArea        CMPI.L        #$FFFFFF,D1
  859.             BHI.S        AreaBad
  860.             CMPI.L        #$DFFFFF,D1
  861.             BHI.S        AreaOk
  862.             CMPI.L        #$DF0000,D1
  863.             BCS.S        AreaOk
  864.             LEA        CustomChipsRq(PC),A1
  865.             BRA.W        Request
  866. AreaOk            MOVE.L        D1,Pointer(A4)
  867. AreaBad            RTS
  868.  
  869. ******************** Searches subroutines **************************************
  870.  
  871. SearchString        LEA        TextSearch(PC),A1
  872.             MOVEQ        #101,D0
  873.             BSR.W        Search
  874.  
  875. SearchAgain1        LEA        SearchBuffer(PC),A2
  876.             MOVE.B        (A2)+,D0
  877.             BEQ.S        AreaBad
  878. NextByte        CMP.B        (A0)+,D0
  879.             BEQ.S        FoundSth
  880.             CMPA.L        A1,A0
  881.             BCS.S        NextByte
  882.             LEA        RequestString(PC),A1
  883.             BRA.W        Request
  884. FoundSth        MOVE.L        A0,A3
  885.             MOVE.W        SearchSInfo+16(PC),D3
  886.             SUBQ.W        #2,D3
  887.             BCS.S        StringFound
  888. CmpBuffer        CMPM.B        (A3)+,(A2)+
  889.             DBNE        D3,CmpBuffer
  890.             BNE.S        SearchAgain1
  891.             LEA        SearchBuffer+1(PC),A2
  892.             CMPA.L        A0,A2
  893.             BEQ.S        SearchAgain1
  894. StringFound        SUBQ.W        #1,A0
  895.             BRA.S        Found
  896.  
  897. SearchWord        LEA        TextWord(PC),A1
  898.             MOVEQ        #5,D0
  899.             BSR.S        Search
  900. SearchAgain2        LEA        SearchBuffer(PC),A2
  901.             BSR.W        BufferToHex
  902.             BMI.S        ToRTS
  903.             BSR.S        Parity
  904. NextWord        CMP.W        (A0)+,D0
  905.             BEQ.S        WordFound
  906.             CMPA.L        A1,A0
  907.             BCS.S        NextWord
  908.             LEA        RequestWord(PC),A1
  909.             BRA.W        Request
  910. WordFound        SUBQ.W        #2,A0
  911. Found            MOVE.L        A0,Pointer(A4)
  912. ToRTS            RTS
  913.  
  914. Parity            MOVE.L        A0,D1
  915.             BTST        #0,D1
  916.             BEQ.S        ParityOk
  917.             ADDQ.L        #1,D1
  918. ParityOk        MOVE.L        D1,A0
  919.             RTS
  920.  
  921. SearchLongWord        LEA        TextLongWord(PC),A1
  922.             MOVEQ        #9,D0
  923.             BSR.S        Search
  924.             SUBQ.W        #1,A1
  925. SearchAgain3        LEA        SearchBuffer(PC),A2
  926.             BSR.W        BufferToHex
  927.             BMI.S        ToRTS
  928.             BSR.S        Parity
  929. NextLongWord        CMP.L        (A0),D0
  930.             BEQ.S        Found
  931.             ADDQ.W        #2,A0
  932.             CMPA.L        A1,A0
  933.             BCS.S        NextLongWord
  934.             LEA        RequestLongWord(PC),A1
  935.             BRA.W        Request
  936.  
  937. Search            LEA        SearchWW(PC),A0
  938.             MOVE.L        A1,26(A0)
  939.             MOVE.W        D0,SearchSInfo-SearchWW+10(A0)
  940.             MOVEQ        #50,D1
  941.             LEA        SearchBuffer(PC),A1
  942. ClearSearchBuffer    CLR.B        (A1)+
  943.             DBF        D1,ClearSearchBuffer
  944.             MOVE.L        IntBase(A4),A6
  945.             JSR        OpenWindow(A6)
  946.             MOVE.L        D0,WW2(A4)
  947.             BEQ.W        Insufficient
  948.             LEA        SearchGG(PC),A0
  949.             BSR.W        ActivStringGG
  950. SearchLoop        BSR.W        Show
  951.             MOVE.L        WW2(A4),A0
  952.             MOVE.L        86(A0),A0
  953.             MOVE.L        4.W,A6
  954.             JSR        GetMsg(A6)
  955.             TST.L        D0
  956.             BEQ.S        SearchLoop
  957.             MOVE.L        D0,A1
  958.             MOVE.W        22(A1),D2
  959.             JSR        ReplyMsg(A6)
  960.             BSR.W        Close2ndWW
  961.             CMPI.W        #$200,D2
  962.             BEQ.S        ExitSearch
  963. RepeatArea        LEA        FirstArea(PC),A3
  964.             MOVE.L        Pointer(A4),D0
  965. SearchArea        MOVE.L        (A3)+,A0
  966.             MOVE.L        (A3)+,A1
  967.             CMP.L        A0,D0
  968.             BCS.S        Next_3
  969.             CMP.L        A1,D0
  970.             BHI.S        Next_4
  971.             RTS
  972. Next_3            ADDQ.W        #4,A3
  973. Next_4            LEA        16(A3),A3
  974.             BRA.S        SearchArea
  975. ExitSearch        ADDQ.W        #4,A7
  976. ToRTS2            RTS
  977.  
  978. RepeatSearch        MOVE.W        SearchSInfo+10(PC),D7
  979.             BEQ.S        ToRTS2
  980.             MOVE.W        SearchSInfo+16(PC),D6
  981.             BEQ.S        ToRTS2
  982.             BSR.S        RepeatArea
  983.             MOVE.L        D0,A0
  984.             ADDQ.W        #1,A0
  985.             CMPI.W        #9,D7
  986.             BCS.W        SearchAgain2
  987.             BEQ.W        SearchAgain3
  988.             CMPI.W        #101,D7
  989.             BEQ.W        SearchAgain1
  990.             BRA.S        RSearchTask
  991.  
  992. SearchTask        LEA        TextTask2(PC),A1
  993.             MOVE.W        #103,D0
  994.             BSR.W        Search
  995. RSearchTask        LEA        SearchBuffer(PC),A1
  996.             MOVE.L        4.W,A6
  997.             JSR        FindTask(A6)
  998.             TST.L        D0
  999.             BNE.S        TaskFound
  1000.             LEA        TaskRequest(PC),A1
  1001.             BRA.W        Request
  1002. TaskFound        MOVE.L        D0,A0
  1003.             BRA.W        Found
  1004.  
  1005. ******************** Show subroutine *******************************************
  1006.  
  1007. Show            MOVE.L        RP1(A4),A1
  1008.             MOVE.L        GfxBase(A4),A6
  1009.             MOVE.L        Pointer(A4),D4
  1010.             LEA        Line+15(PC),A2
  1011.             MOVEQ        #6-1,D6
  1012. Loop8            MOVE.B        D4,D5
  1013.             AND.B        #%00001111,D5
  1014.             CMP.B        #9,D5
  1015.             BLE.S        NotGreater1
  1016.             ADDQ.B        #7,D5
  1017. NotGreater1        ADD.B        #'0',D5
  1018.             MOVE.B        D5,-(A2)
  1019.             LSR.L        #4,D4
  1020.             DBF        D6,Loop8
  1021.             MOVE.L        #$00110030,36(A1)
  1022.             LEA        Line(PC),A3
  1023.             MOVEQ        #38,D0
  1024.             BSR.W        Print
  1025.             MOVE.L        Pointer(A4),D0
  1026. FindArea        CMP.L        (A3)+,D0
  1027.             BCS.S        Next_1
  1028.             CMP.L        (A3)+,D0
  1029.             BHI.S        Next_2
  1030.             MOVEQ        #16,D0
  1031.             BSR.W        Print
  1032.             BRA.S        ShowNumbers
  1033. Next_1            ADDQ.W        #4,A3
  1034. Next_2            LEA        16(A3),A3
  1035.             BRA.S        FindArea
  1036. ShowNumbers        MOVE.B        Pointer+3(A4),D6
  1037.             LSR.B        #4,D6
  1038.             MOVE.L        #$0011003F,36(A1)
  1039.             MOVE.L        Pointer(A4),D4
  1040.             CLR.B        D4
  1041.             MOVE.L        D4,A5
  1042.             MOVEQ        #0,D7
  1043. NextLine        LEA        PrintCodes+8(PC),A2
  1044.             LEA        30(A2),A0
  1045.             MOVEQ        #4-1,D3
  1046. NextPart        MOVE.L        (A5)+,D4
  1047.             MOVE.L        D4,(A0)+
  1048.             MOVEQ        #8-1,D0
  1049. Loop9            MOVE.B        D4,D5
  1050.             AND.B        #%00001111,D5
  1051.             CMP.B        #9,D5
  1052.             BLE.S        NotGreater2
  1053.             ADDQ.B        #7,D5
  1054. NotGreater2        ADD.B        #'0',D5
  1055.             MOVE.B        D5,-(A2)
  1056.             LSR.L        #4,D4
  1057.             DBF        D0,Loop9
  1058.             LEA        17(A2),A2
  1059.             DBF        D3,NextPart
  1060.             LEA        PrintCodes(PC),A3
  1061.             CMP.B        D7,D6
  1062.             BEQ.S        ShowCur
  1063.             MOVEQ        #54,D0
  1064.             BSR.W        Print
  1065. Return            MOVE.W        #$11,36(A1)
  1066.             ADDQ.W        #8,38(A1)
  1067.             ADDQ.B        #1,D7
  1068.             CMPI.B        #16,D7
  1069.             BNE.S        NextLine
  1070. TextOver        RTS
  1071.  
  1072. ShowCur            MOVE.L        D6,-(A7)
  1073.             MOVE.B        Pointer+3(A4),D2
  1074.             ANDI.W        #$000F,D2
  1075.             MOVE.W        D2,D0
  1076.             LSR.B        #2,D0
  1077.             LSL.B        #1,D2
  1078.             ADD.B        D2,D0
  1079.             MOVEQ        #38,D6
  1080.             SUB.B        D0,D6
  1081.             SUBQ.B        #2,D6
  1082.             LEA        PrintCodes(PC),A3
  1083.             BSR.S        Print
  1084.             MOVEQ        #2,D0
  1085.             JSR        SetAPen(A6)
  1086.             MOVEQ        #3,D0
  1087.             JSR        SetBPen(A6)
  1088.             MOVEQ        #2,D0
  1089.             BSR.W        Print
  1090.             MOVEQ        #1,D0
  1091.             JSR        SetAPen(A6)
  1092.             MOVEQ        #0,D0
  1093.             JSR        SetBPen(A6)
  1094.             MOVE.L        D6,D4
  1095.             MOVE.B        Pointer+3(A4),D0
  1096.             ANDI.W        #$000F,D0
  1097.             MOVEQ        #16,D6
  1098.             SUB.B        D0,D6
  1099.             SUBQ.B        #1,D6
  1100.             ADD.W        D4,D0
  1101.             BSR.S        Print
  1102.             MOVEQ        #2,D0
  1103.             JSR        SetAPen(A6)
  1104.             MOVEQ        #3,D0
  1105.             JSR        SetBPen(A6)
  1106.             MOVEQ        #1,D0
  1107.             BSR.S        Print
  1108.             MOVEQ        #1,D0
  1109.             JSR        SetAPen(A6)
  1110.             MOVEQ        #0,D0
  1111.             JSR        SetBPen(A6)
  1112.             MOVE.L        D6,D0
  1113.             BSR.S        Print
  1114.             MOVE.L        (A7)+,D6
  1115.             BRA.W        Return
  1116.  
  1117. Print            MOVE.L        D0,D4
  1118.             BEQ.W        TextOver
  1119.             SUBQ.B        #1,D0
  1120.             LEA        TextImage(PC),A0
  1121. MoveNextChar        MOVEQ        #0,D1
  1122.             MOVE.B        (A3)+,D1
  1123.             LSL.W        #3,D1
  1124.             LEA        Fonts(PC,D1.W),A2
  1125.             MOVE.B        (A2)+,(A0)+
  1126.             MOVE.B        (A2)+,53(A0)
  1127.             MOVE.B        (A2)+,107(A0)
  1128.             MOVE.B        (A2)+,161(A0)
  1129.             MOVE.B        (A2)+,215(A0)
  1130.             MOVE.B        (A2)+,269(A0)
  1131.             MOVE.B        (A2)+,323(A0)
  1132.             MOVE.B        (A2),377(A0)
  1133.             DBF        D0,MoveNextChar
  1134.             SUBA.W        D4,A0
  1135.             MOVEQ        #0,D0
  1136.             MOVEQ        #54,D1
  1137.             MOVE.W        36(A1),D2
  1138.             EXT.L        D2
  1139.             MOVE.W        38(A1),D3
  1140.             EXT.L        D3
  1141.             LSL.W        #3,D4
  1142.             ADD.W        D4,36(A1)
  1143.             MOVEQ        #8,D5
  1144.             JSR        BltTemplate(A6)
  1145.             JMP        WaitBlit(A6)
  1146. Fonts            INCBIN        Fonts.CE
  1147.  
  1148. BufferToHex        MOVEQ        #0,D0
  1149.             TST.B        (A2)
  1150.             BEQ.S        ErrorBuffer
  1151. ConvertBuffer        MOVE.B        (A2)+,D1
  1152.             BEQ.S        EndBuffer
  1153.             SUBI.B        #'0',D1
  1154.             BCLR        #5,D1
  1155.             CMPI.B        #9,D1
  1156.             BLS.S        LessOrSame
  1157.             SUBQ.B        #7,D1
  1158. LessOrSame        CMPI.B        #$0F,D1
  1159.             BHI.S        ErrorBuffer
  1160.             LSL.L        #4,D0
  1161.             ADD.B        D1,D0
  1162.             BRA.S        ConvertBuffer
  1163. ErrorBuffer        MOVEQ        #-1,D0
  1164. EndBuffer        RTS
  1165.  
  1166. ******************** Request subroutine ****************************************
  1167.  
  1168. Insufficient        LEA        MemoryRequest(PC),A1
  1169.  
  1170. Request            LEA        RequestWW(PC),A0
  1171.             MOVE.L        A1,RequestIText-RequestWW+12(A0)
  1172.             MOVE.L        IntBase(A4),A6
  1173.             MOVE.L        68(A6),D0
  1174.             SUBI.W        #174,D0
  1175.             BPL.S        Rq1
  1176.             CLR.W        D0
  1177.             BRA.S        Rq2
  1178. Rq1            CMPI.W        #386,D0
  1179.             BCS.S        Rq2
  1180.             MOVE.W        #420,D0
  1181. Rq2            SWAP        D0
  1182.             LSR.W        #1,D0
  1183.             SUBI.W        #34,D0
  1184.             BPL.S        Rq3
  1185.             CLR.W        D0
  1186.             BRA.S        Rq4
  1187. Rq3            CMPI.W        #178,D0
  1188.             BCS.S        Rq4
  1189.             MOVE.W        #212,D0
  1190. Rq4            MOVE.L        D0,(A0)
  1191.             JSR        OpenWindow(A6)
  1192.             MOVE.L        D0,D7
  1193.             BEQ.S        EndBuffer
  1194.  
  1195. RequestLoop        MOVE.L        D7,A0
  1196.             MOVE.L        86(A0),A0
  1197.             MOVE.L        4.W,A6
  1198.             JSR        GetMsg(A6)
  1199.             TST.L        D0
  1200.             BEQ.S        RequestLoop
  1201.             MOVE.L        D0,A1
  1202.             MOVE.W        22(A1),D2
  1203.             MOVE.B        25(A1),D3
  1204.             JSR        ReplyMsg(A6)
  1205.             CMPI.B        #$40,D2
  1206.             BEQ.S        ExitRequest
  1207.             CMPI.B        #$35,D3
  1208.             BEQ.S        ExitRequest
  1209.             CMPI.B        #$45,D3
  1210.             BEQ.S        ExitRequest
  1211.             CMPI.B        #$34,D3
  1212.             BNE.S        RequestLoop
  1213. ExitRequest        MOVE.L        D7,A0
  1214.             MOVE.L        IntBase(A4),A6
  1215.             JMP        CloseWindow(A6)
  1216.  
  1217. ******************** Structures ************************************************
  1218.  
  1219. MainWindow        DC.W        66,0,508,200
  1220.             DC.B        3,2
  1221.             DC.L        $568,$21000,WWFrontGG,0,0,0,0
  1222.             DC.W        0,0,0,0,1
  1223.  
  1224. WWFrontGG        DC.L        WWBackGG
  1225.             DC.W        -43,5,37,14,$14,1,1
  1226.             DC.L        0,0,0,0,0
  1227.             DC.W        0,0,0
  1228. WWBackGG        DC.L        DragGG
  1229.             DC.W        -43,25,37,13,$14,1,1
  1230.             DC.L        0,0,0,0,0
  1231.             DC.W        0,0,0
  1232. DragGG            DC.L        ArrowUpGG
  1233.             DC.W        0,0,0,40,$27,0,$20
  1234.             DC.L        Image,0,0,0,0
  1235.             DC.W        0,0,0
  1236. ArrowUpGG        DC.L        ArrowDownGG
  1237.             DC.W        462,64,32,32,6,3,1
  1238.             DC.L        ImageArrowUp1,ImageArrowUp2,0,0,0
  1239.             DC.W        0,0,0
  1240. ArrowDownGG        DC.L        ModeGG
  1241.             DC.W        462,158,32,32,6,3,1
  1242.             DC.L        ImageArrowDown1,ImageArrowDown2,0,0,0
  1243.             DC.W        0,0,0
  1244. ModeGG            DC.W        0,0,160,47,82,10,3,3,1
  1245.             DC.L        BlueBorder,0,0,0,0
  1246.             DC.W        0,0,0
  1247.  
  1248. ImageArrowUp1        DC.W        0,0,32,32,2
  1249.             DC.L        ArrowUp
  1250.             DC.B        3,0,0,0,0,0
  1251. ImageArrowUp2        DC.W        0,0,32,32,2
  1252.             DC.L        ArrowUp
  1253.             DC.B        1,3,0,0,0,0
  1254. ImageArrowDown1        DC.W        0,0,32,32,2
  1255.             DC.L        ArrowDown
  1256.             DC.B        3,0,0,0,0,0
  1257. ImageArrowDown2        DC.W        0,0,32,32,2
  1258.             DC.L        ArrowDown
  1259.             DC.B        1,3,0,0,0,0
  1260. ArrowUp            DC.L        %00000000000000000000000000000000
  1261.             DC.L        %00000000000000111100000000000000
  1262.             DC.L        %00000000000011111111000000000000
  1263.             DC.L        %00000000001111111111110000000000
  1264.             DC.L        %00000000111111111111111100000000
  1265.             DC.L        %00000011111111111111111111000000
  1266.             DC.L        %00001111111111111111111111110000
  1267.             DC.L        %00000000001111111111110000000000
  1268.             DC.L        %00000000001111111111110000000000
  1269.             DC.L        %00000000001111111111110000000000
  1270.             DC.L        %00000000001111111111110000000000
  1271.             DC.L        %00000000001111111111110000000000
  1272.             DC.L        %00000000001111111111110000000000
  1273.             DC.L        %00000000001111111111110000000000
  1274.             DC.L        %00000000001111111111110000000000
  1275.             DC.L        %00000000001111111111110000000000
  1276.             DC.L        %00000000001111111111110000000000
  1277.             DC.L        %00000000001111111111110000000000
  1278.             DC.L        %00000000000000000000000000000000
  1279.             DC.L        %00000000000000000000000000000000
  1280.             DC.L        %00000000000000000000000000000000
  1281.             DC.L        %00000000001111111111110000000000
  1282.             DC.L        %00000000001111111111110000000000
  1283.             DC.L        %00000000000000000000000000000000
  1284.             DC.L        %00000000000000000000000000000000
  1285.             DC.L        %00000000000000000000000000000000
  1286.             DC.L        %00000000001111111111110000000000
  1287.             DC.L        %00000000000000000000000000000000
  1288.             DC.L        %00000000000000000000000000000000
  1289.             DC.L        %00000000000000000000000000000000
  1290.             DC.L        %00000000000000000000000000000000
  1291.             DC.L        %00000000000000000000000000000000
  1292.  
  1293.             DC.L        %00000000000000111100000000000000
  1294.             DC.L        %00000000000011000011000000000000
  1295.             DC.L        %00000000001100000000110000000000
  1296.             DC.L        %00000000110000000000001100000000
  1297.             DC.L        %00000011000000000000000011000000
  1298.             DC.L        %00001100000000000000000000110000
  1299.             DC.L        %00110000000000000000000000001100
  1300.             DC.L        %11111111110000000000001111111111
  1301.             DC.L        %00000000110000000000001100000000
  1302.             DC.L        %00000000110000000000001100000000
  1303.             DC.L        %00000000110000000000001100000000
  1304.             DC.L        %00000000110000000000001100000000
  1305.             DC.L        %00000000110000000000001100000000
  1306.             DC.L        %00000000110000000000001100000000
  1307.             DC.L        %00000000110000000000001100000000
  1308.             DC.L        %00000000110000000000001100000000
  1309.             DC.L        %00000000110000000000001100000000
  1310.             DC.L        %00000000110000000000001100000000
  1311.             DC.L        %00000000111111111111111100000000
  1312.             DC.L        %00000000000000000000000000000000
  1313.             DC.L        %00000000111111111111111100000000
  1314.             DC.L        %00000000110000000000001100000000
  1315.             DC.L        %00000000110000000000001100000000
  1316.             DC.L        %00000000111111111111111100000000
  1317.             DC.L        %00000000000000000000000000000000
  1318.             DC.L        %00000000111111111111111100000000
  1319.             DC.L        %00000000110000000000001100000000
  1320.             DC.L        %00000000111111111111111100000000
  1321.             DC.L        %00000000000000000000000000000000
  1322.             DC.L        %00000000111111111111111100000000
  1323.             DC.L        %00000000111111111111111100000000
  1324.  
  1325. ArrowDown        DC.L        %00000000000000000000000000000000
  1326.             DC.L        %00000000000000000000000000000000
  1327.             DC.L        %00000000000000000000000000000000
  1328.             DC.L        %00000000000000000000000000000000
  1329.             DC.L        %00000000000000000000000000000000
  1330.             DC.L        %00000000001111111111110000000000
  1331.             DC.L        %00000000000000000000000000000000
  1332.             DC.L        %00000000000000000000000000000000
  1333.             DC.L        %00000000000000000000000000000000
  1334.             DC.L        %00000000001111111111110000000000
  1335.             DC.L        %00000000001111111111110000000000
  1336.             DC.L        %00000000000000000000000000000000
  1337.             DC.L        %00000000000000000000000000000000
  1338.             DC.L        %00000000000000000000000000000000
  1339.             DC.L        %00000000001111111111110000000000
  1340.             DC.L        %00000000001111111111110000000000
  1341.             DC.L        %00000000001111111111110000000000
  1342.             DC.L        %00000000001111111111110000000000
  1343.             DC.L        %00000000001111111111110000000000
  1344.             DC.L        %00000000001111111111110000000000
  1345.             DC.L        %00000000001111111111110000000000
  1346.             DC.L        %00000000001111111111110000000000
  1347.             DC.L        %00000000001111111111110000000000
  1348.             DC.L        %00000000001111111111110000000000
  1349.             DC.L        %00000000001111111111110000000000
  1350.             DC.L        %00001111111111111111111111110000
  1351.             DC.L        %00000011111111111111111111000000
  1352.             DC.L        %00000000111111111111111100000000
  1353.             DC.L        %00000000001111111111110000000000
  1354.             DC.L        %00000000000011111111000000000000
  1355.             DC.L        %00000000000000111100000000000000
  1356.             DC.L        %00000000000000000000000000000000
  1357.  
  1358.             DC.L        %00000000000000000000000000000000
  1359.             DC.L        %00000000111111111111111100000000
  1360.             DC.L        %00000000111111111111111100000000
  1361.             DC.L        %00000000000000000000000000000000
  1362.             DC.L        %00000000111111111111111100000000
  1363.             DC.L        %00000000110000000000001100000000
  1364.             DC.L        %00000000111111111111111100000000
  1365.             DC.L        %00000000000000000000000000000000
  1366.             DC.L        %00000000111111111111111100000000
  1367.             DC.L        %00000000110000000000001100000000
  1368.             DC.L        %00000000110000000000001100000000
  1369.             DC.L        %00000000111111111111111100000000
  1370.             DC.L        %00000000000000000000000000000000
  1371.             DC.L        %00000000111111111111111100000000
  1372.             DC.L        %00000000110000000000001100000000
  1373.             DC.L        %00000000110000000000001100000000
  1374.             DC.L        %00000000110000000000001100000000
  1375.             DC.L        %00000000110000000000001100000000
  1376.             DC.L        %00000000110000000000001100000000
  1377.             DC.L        %00000000110000000000001100000000
  1378.             DC.L        %00000000110000000000001100000000
  1379.             DC.L        %00000000110000000000001100000000
  1380.             DC.L        %00000000110000000000001100000000
  1381.             DC.L        %00000000110000000000001100000000
  1382.             DC.L        %11111111110000000000001111111111
  1383.             DC.L        %00110000000000000000000000001100
  1384.             DC.L        %00001100000000000000000000110000
  1385.             DC.L        %00000011000000000000000011000000
  1386.             DC.L        %00000000110000000000001100000000
  1387.             DC.L        %00000000001100000000110000000000
  1388.             DC.L        %00000000000011000011000000000000
  1389.             DC.L        %00000000000000111100000000000000
  1390.  
  1391. Image            DC.W        0,0,508,40,2
  1392.             DC.L        ImageData
  1393.             DC.B        3,0,0,0,0,0
  1394. ImageData        INCBIN        Image.CE
  1395. BlueBorder        DC.W        0,0
  1396.             DC.B        2,0,0,9
  1397.             DC.L        BlueLines,Shadows1
  1398. BlueLines        DC.W        301,16,334,16,334,143,301,143,301,16,301,49,334,49,334,110,301,110
  1399. Shadows1        DC.W        0,0
  1400.             DC.B        1,0,0,3
  1401.             DC.L        UpLines,Shadows2
  1402. UpLines            DC.W        -158,-7,345,-7,345,150
  1403. Shadows2        DC.W        0,0
  1404.             DC.B        3,0,0,3
  1405.             DC.L        DownLines,0
  1406. DownLines        DC.W        -158,-6,-158,151,345,151
  1407.  
  1408.  
  1409. Line            DC.B        'Address:          Mode: view   Area:  '
  1410.  
  1411. FirstArea        DC.L        $000000,$07FFFF
  1412.             DC.B        ' Chip RAM       '
  1413.             DC.L        $080000,$1FFFFF
  1414.             DC.B        'copy of chip RAM'
  1415.             DC.L        $200000,$9FFFFF
  1416.             DC.B        ' Fast RAM       '
  1417.             DC.L        $A00000,$BFFFFF
  1418.             DC.B        ' CIAs           '
  1419.             DC.L        $C00000,$C7FFFF
  1420.             DC.B        ' Expansion      '
  1421.             DC.L        $C80000,$DBFFFF
  1422.             DC.B        ' Unused         '
  1423.             DC.L        $DC0000,$DEFFFF
  1424.             DC.B        ' Realtime clock '
  1425.             DC.L        $E00000,$E7FFFF
  1426.             DC.B        ' Unused         '
  1427.             DC.L        $E80000,$EFFFFF
  1428.             DC.B        ' Expansion slot '
  1429.             DC.L        $F00000,$F7FFFF
  1430.             DC.B        ' ROM module     '
  1431.             DC.L        $F80000,$FBFFFF
  1432.             DC.B        ' copy of ROM    '
  1433.             DC.L        $FC0000,$FFFFFF
  1434.             DC.B        ' KickStart ROM  '
  1435.  
  1436. PrintCodes        DCB.B        54,' '
  1437. RememberKey        DC.L        0
  1438.  
  1439. RequestWW        DC.W        0,0,220,44
  1440.             DC.B        2,1
  1441.             DC.L        $440,$31002,RequestGG,0,TitleRequest,0,0
  1442.             DC.W        0,0,0,0,1
  1443. RequestGG        DC.W        0,0,140,27,68,12,1,3,1
  1444.             DC.L        0,0,RequestIText,0,0
  1445.             DC.W        0,0,0
  1446. RequestIText        DC.B        2,0,0,0
  1447.             DC.W        -130,-12
  1448.             DC.L        0,0,ResumeIText
  1449. ResumeIText        DC.B        3,0,0,0
  1450.             DC.W        10,2
  1451.             DC.L        0,ResumeText,0
  1452.  
  1453. LoadSaveWW        DC.W        180,60,280,136
  1454.             DC.B        3,2
  1455.             DC.L        $68,$31012,ParentGadget,0,0,0,0
  1456.             DC.W        0,0,0,0,1
  1457. ParentGadget        DC.L        OkGadget
  1458.             DC.W        8,15,71,8,0,$203,1
  1459.             DC.L        Borders,0,ParentIText,0,0
  1460.             DC.W        0,0,0
  1461. ParentIText        DC.B        3,0,0,0
  1462.             DC.W        10,0
  1463.             DC.L        0,ParentText,0
  1464. OkGadget        DC.L        GetdirGadget
  1465.             DC.W        8,-12,71,8,8,$203,1
  1466.             DC.L        Borders,0,OkIText,0,0
  1467.             DC.W        0,0,0
  1468. Borders            DC.W        0,0
  1469.             DC.B        2,0,0,5
  1470.             DC.L        OkLines,0
  1471. OkLines            DC.W        -2,-2,72,-2,72,9,-2,9,-2,-2
  1472. OkIText            DC.B        3,0,0,0
  1473.             DC.W        25,0
  1474.             DC.L        0,OkString,0
  1475. GetdirGadget        DC.L        CancelGadget
  1476.             DC.W        105,-12,71,8,8,$203,1
  1477.             DC.L        Borders,0,GetdirIText,0,0
  1478.             DC.W        0,0,0
  1479. GetdirIText        DC.B        3,0,0,0
  1480.             DC.W        12,0
  1481.             DC.L        0,GetdirString,0
  1482. CancelGadget        DC.L        PropGadget
  1483.             DC.W        -79,-12,71,8,$18,$203,1
  1484.             DC.L        Borders,0,CancelIText,0,0
  1485.             DC.W        0,0,0
  1486. CancelIText        DC.B        3,0,0,0
  1487.             DC.W        12,0
  1488.             DC.L        0,CancelString,0
  1489. PropGadget        DC.L        DirGadget
  1490.             DC.W        255,26,18,60,4,3,3
  1491.             DC.L        ImageSlider,0,0,0,PropInfo
  1492.             DC.W        0,0,0
  1493. PropInfo        DC.W        5,0,0,0,$FFFF,0,0,0,0,0,0
  1494. DirGadget        DC.L        FileGadget
  1495.             DC.W        88,90,180,10,0,3,4
  1496.             DC.L        LoadBorder1,0,DirIText,0,DirSInfo
  1497.             DC.W        0,0,0
  1498. DirIText        DC.B        3,0,0,0
  1499.             DC.W        -80,0
  1500.             DC.L        0,DirText,FileIText
  1501. FileIText        DC.B        3,0,0,0
  1502.             DC.W        -80,10
  1503.             DC.L        0,FileText,0
  1504. DirSInfo        DC.L        DirBuffer,DirBuffer
  1505.             DC.W        0,101,0,0,0,0,0,0
  1506.             DC.L        0,0,0
  1507. LoadBorder1        DC.W        0,0
  1508.             DC.B        1,0,0,0
  1509.             DC.L        DirLines,LoadBorder2
  1510. DirLines        DC.W        184,8,-4,8,-4,18,184,18,184,-2,-4,-2,-4,18,-4,28,62,28,62,18
  1511. LoadBorder2        DC.W        0,10
  1512.             DC.B        2,0,0,5
  1513.             DC.L        FileLines,0
  1514. FileLines        DC.W        -82,-15,161,-15,161,-74,-82,-74,-82,-15
  1515. FileGadget        DC.W        0,0,88,100,180,10,0,3,4
  1516.             DC.L        0,0,0,0,FileSInfo
  1517.             DC.W        0,0,0
  1518. FileSInfo        DC.L        FileBuffer,FileBuffer
  1519.             DC.W        0,31,0,0,0,0,0,0
  1520.             DC.L        0,0,0
  1521. LengthGadget        DC.W        0,0,88,110,90,10,0,3,4
  1522.             DC.L        0,0,LengthIText,0,LengthSInfo
  1523.             DC.W        0,0,0
  1524. LengthSInfo        DC.L        SaveLengthBuffer,SaveLengthBuffer
  1525.             DC.W        0,7,0,0,0,0,0,0
  1526.             DC.L        0,0,0
  1527. LengthIText        DC.B        3,0,0,0
  1528.             DC.W        -80,0
  1529.             DC.L        0,LengthText,0
  1530.  
  1531. ModifyWW        DC.W        216,96,208,65
  1532.             DC.B        3,2
  1533.             DC.L        $240,$3100A,ByteGG,0,TextChange,0,0
  1534.             DC.W        0,0,0,0,1
  1535. ByteGG            DC.L        WordGG
  1536.             DC.W        110,22,90,10,0,3,4
  1537.             DC.L        BorderL,0,ByteIText,0,ByteSInfo
  1538.             DC.W        0,0,0
  1539. ByteIText        DC.B        3,0,0,0
  1540.             DC.W        -90,0
  1541.             DC.L        0,ByteText,0
  1542. ByteSInfo        DC.L        ByteBuffer,ByteBuffer
  1543.             DC.W        0,3,0,0,0,0,0,0,0,0,0,0,0,0
  1544. WordGG            DC.L        LongGG
  1545.             DC.W        110,33,90,10,0,3,4
  1546.             DC.L        BorderL,0,WordIText,0,WordSInfo
  1547.             DC.W        0,0,0
  1548. WordIText        DC.B        3,0,0,0
  1549.             DC.W        -90,0
  1550.             DC.L        0,WordText,0
  1551. WordSInfo        DC.L        WordBuffer,WordBuffer
  1552.             DC.W        0,5,0,0,0,0,0,0,0,0,0,0,0,0
  1553. LongGG            DC.W        0,0,110,44,90,10,0,3,4
  1554.             DC.L        BorderL,0,LongIText,0,LongSInfo
  1555.             DC.W        0,0,0
  1556. LongIText        DC.B        3,0,0,0
  1557.             DC.W        -90,0
  1558.             DC.L        0,LongText,0
  1559. LongSInfo        DC.L        LongBuffer,LongBuffer
  1560.             DC.W        0,9,0,0,0,0,0,0,0,0,0,0,0,0
  1561. BorderL            DC.W        0,0
  1562.             DC.B        1,0,0,5
  1563.             DC.L        LinesB,0
  1564. LinesB            DC.W        -4,-2,76,-2,76,9,-4,9,-4,-2
  1565.  
  1566. FillMoveWW        DC.W        217,101,206,54
  1567.             DC.B        3,2
  1568.             DC.L        $240,$3100A,LengthGG,0,TextFill,0,0
  1569.             DC.W        0,0,0,0,1
  1570. LengthGG        DC.L        PatternGG
  1571.             DC.W        110,22,90,10,0,3,4
  1572.             DC.L        BorderL,0,FMLengthIText,0,FMLengthSInfo
  1573.             DC.W        0,0,0
  1574. FMLengthIText        DC.B        3,0,0,0
  1575.             DC.W        -90,0
  1576.             DC.L        0,FMLengthText,0
  1577. FMLengthSInfo        DC.L        LengthBuffer,LengthBuffer
  1578.             DC.W        0,7,0,0,0,0,0,0,0,0,0,0,0,0
  1579. PatternGG        DC.W        0,0,110,33,90,10,0,3,4
  1580.             DC.L        BorderL,0,PatternIText,0,PatternSInfo
  1581.             DC.W        0,0,0
  1582. PatternIText        DC.B        3,0,0,0
  1583.             DC.W        -90,0
  1584.             DC.L        0,PatternText,0
  1585. PatternSInfo        DC.L        PatternBuffer,PatternBuffer
  1586.             DC.W        0,7,0,0,0,0,0,0,0,0,0,0,0,0
  1587.  
  1588. SetAddressWW        DC.W        259,103,122,50
  1589.             DC.B        3,2
  1590.             DC.L        $240,$3100A,SetAddrGG,0,TextSetAddress,0,0
  1591.             DC.W        0,0,0,0,1
  1592. SetAddrGG        DC.W        0,0,24,26,72,10,0,3,4
  1593.             DC.L        BorderL,0,0,0,SetAddrSInfo
  1594.             DC.W        0,0,0
  1595. SetAddrSInfo        DC.L        SetAddressBuffer,SetAddressBuffer
  1596.             DC.W        0,7,0,0,0,0,0,0,0,0,0,0,0,0
  1597.  
  1598. SearchWW        DC.W        211,103,218,51
  1599.             DC.B        3,2
  1600.             DC.L        $240,$3100A,SearchGG,0,0,0,0
  1601.             DC.W        0,0,0,0,1
  1602. SearchGG        DC.L        0
  1603.             DC.W        16,26,190,10,0,3,4
  1604.             DC.L        SearchBorder,0,0,0,SearchSInfo
  1605.             DC.W        0,0,0
  1606. SearchSInfo        DC.L        SearchBuffer,SearchBuffer
  1607.             DCB.W        14,0
  1608. SearchBorder        DC.W        0,0
  1609.             DC.B        1,0,0,5
  1610.             DC.L        SearchLines,0
  1611. SearchLines        DC.W        -5,-2,188,-2,188,9,-5,9,-5,-2
  1612.  
  1613. MenuMemory        DC.L        MenuAddress
  1614.             DC.W        0,0,88,0,$101
  1615.             DC.L        MenuTitleMemory,ItemLoad,0,0
  1616. ItemLoad        DC.L        ItemSave
  1617.             DC.W        0,0,210,10,$56
  1618.             DC.L        0,LoadIText,0
  1619.             DC.B        'O',0
  1620.             DC.W        0,0,-1
  1621. ItemSave        DC.L        ItemModify
  1622.             DC.W        0,10,210,10,$56
  1623.             DC.L        0,SaveIText,0
  1624.             DC.B        'W',0
  1625.             DC.W        0,0,-1
  1626. ItemModify        DC.L        ItemFill
  1627.             DC.W        0,20,210,10,$56
  1628.             DC.L        0,ModifyIText,0
  1629.             DC.B        'M',0
  1630.             DC.W        0,0,-1
  1631. ItemFill        DC.L        ItemMove
  1632.             DC.W        0,30,210,10,$56
  1633.             DC.L        0,FillIText,0
  1634.             DC.B        'F',0
  1635.             DC.W        0,0,-1
  1636. ItemMove        DC.L        ItemQuit
  1637.             DC.W        0,40,210,10,$56
  1638.             DC.L        0,MoveIText,0
  1639.             DC.B        'C',0
  1640.             DC.W        0,0,-1
  1641. ItemQuit        DC.L        0
  1642.             DC.W        0,53,210,10,$56
  1643.             DC.L        0,QuitIText,0
  1644.             DC.B        'Q',0
  1645.             DC.W        0,0,-1
  1646. LoadIText        DC.B        3,2,0,0
  1647.             DC.W        1,1
  1648.             DC.L        0,TextLoad,0
  1649. SaveIText        DC.B        3,2,0,0
  1650.             DC.W        1,1
  1651.             DC.L        0,TextSave,0
  1652. ModifyIText        DC.B        3,2,0,0
  1653.             DC.W        1,1
  1654.             DC.L        0,TextModify,0
  1655. FillIText        DC.B        3,2,0,0
  1656.             DC.W        1,1
  1657.             DC.L        0,TextFill,0
  1658. MoveIText        DC.B        3,2,0,0
  1659.             DC.W        1,1
  1660.             DC.L        0,TextMove,0
  1661. QuitIText        DC.B        3,2,0,0
  1662.             DC.W        1,1
  1663.             DC.L        0,TextQuit,0
  1664. MenuAddress        DC.L        MenuSearch
  1665.             DC.W        88,0,96,0,$101
  1666.             DC.L        MenuTitleAddress,ItemSetAddress,0,0
  1667. ItemSetAddress        DC.L        ItemPgBackwards
  1668.             DC.W        0,0,180,10,$56
  1669.             DC.L        0,SetAddressIText,0
  1670.             DC.B        'A',0
  1671.             DC.W        0,0,-1
  1672. ItemPgBackwards        DC.L        ItemPgForewards
  1673.             DC.W        0,10,180,10,$56
  1674.             DC.L        0,PgBackwardsIText,0
  1675.             DC.B        'U',0
  1676.             DC.W        0,0,-1
  1677. ItemPgForewards        DC.L        0
  1678.             DC.W        0,20,180,10,$56
  1679.             DC.L        0,PgForewardsIText,0
  1680.             DC.B        'D',0
  1681.             DC.W        0,0,-1
  1682. SetAddressIText        DC.B        3,2,0,0
  1683.             DC.W        1,1
  1684.             DC.L        0,TextSetAddress,0
  1685. PgBackwardsIText    DC.B        3,2,0,0
  1686.             DC.W        1,1
  1687.             DC.L        0,TextPgBackwards,0
  1688. PgForewardsIText    DC.B        3,2,0,0
  1689.             DC.W        1,1
  1690.             DC.L        0,TextPgForewards,0
  1691. MenuSearch        DC.W        0,0,184,0,88,0,$101
  1692.             DC.L        MenuTitleSearch,ItemSearch,0,0
  1693. ItemSearch        DC.L        ItemWord
  1694.             DC.W        0,0,180,10,$56
  1695.             DC.L        0,SearchIText,0
  1696.             DC.B        'S',0
  1697.             DC.W        0,0,-1
  1698. ItemWord        DC.L        ItemLongWord
  1699.             DC.W        0,10,180,10,$56
  1700.             DC.L        0,SWordIText,0
  1701.             DC.B        'H',0
  1702.             DC.W        0,0,-1
  1703. ItemLongWord        DC.L        ItemTask
  1704.             DC.W        0,20,180,10,$56
  1705.             DC.L        0,LongWordIText,0
  1706.             DC.B        'L',0
  1707.             DC.W        0,0,-1
  1708. ItemTask        DC.L        ItemRepeat
  1709.             DC.W        0,30,180,10,$56
  1710.             DC.L        0,TaskIText,0
  1711.             DC.B        'T',0
  1712.             DC.W        0,0,-1
  1713. ItemRepeat        DC.W        0,0,0,40,180,10,$56
  1714.             DC.L        0,RepeatIText,0
  1715.             DC.B        'R',0
  1716.             DC.W        0,0,-1
  1717. SearchIText        DC.B        3,2,0,0
  1718.             DC.W        1,1
  1719.             DC.L        0,TextSearch,0
  1720. SWordIText        DC.B        3,2,0,0
  1721.             DC.W        1,1
  1722.             DC.L        0,TextWord,0
  1723. LongWordIText        DC.B        3,2,0,0
  1724.             DC.W        1,1
  1725.             DC.L        0,TextLongWord,0
  1726. TaskIText        DC.B        3,2,0,0
  1727.             DC.W        1,1
  1728.             DC.L        0,TextTask,0
  1729. RepeatIText        DC.B        3,2,0,0
  1730.             DC.W        1,1
  1731.             DC.L        0,TextRepeat,0
  1732.  
  1733. FileDoesNotExist    DC.B        'File doesn',39,'t exist',0
  1734. RequestDevice        DC.B        'Dir or device not found',0
  1735. ParityRequest        DC.B        'Error! Not parity address',0
  1736. CustomChipsRq        DC.B        'Error! Custom chips area',0
  1737. RequestString        DC.B        ' Given string not found',0
  1738. RequestWord        DC.B        ' Given word not found',0
  1739. RequestLongWord        DC.B        'Given long word not found',0
  1740. TaskRequest        DC.B        ' Given task not exist',0
  1741. MemoryRequest        DC.B        ' Insufficient memory !',0
  1742. TitleRequest        DC.B        'Request',0
  1743. ResumeText        DC.B        'Resume',0
  1744. ParentText        DC.B        'Parent',0
  1745. DirText            DC.B        'Directory',0
  1746. FileText        DC.B        'FileName',0
  1747. LengthText        DC.B        'Length',0
  1748. OkString        DC.B        'Ok!',0
  1749. GetdirString        DC.B        'Getdir',0
  1750. CancelString        DC.B        'Cancel',0
  1751. TextChange        DC.B        ' Change B. W. L. to.. ',0
  1752. ByteText        DC.B        'byte  $',0
  1753. WordText        DC.B        'word  $',0
  1754. LongText        DC.B        'long  $',0
  1755. FMLengthText        DC.B        'Length  $',0
  1756. PatternText        DC.B        'Pattern $',0
  1757. MoveToText        DC.B        'Move to $',0
  1758. MenuTitleMemory        DC.B        '  Memory',0
  1759. TextLoad        DC.B        'Load file to memory',0
  1760. TextSave        DC.B        'Save block to file',0
  1761. TextModify        DC.B        'Modify',0
  1762. TextFill        DC.B        'Fill block',0
  1763. TextMove        DC.B        'Move block',0
  1764. TextQuit        DC.B        'Quit',0
  1765. MenuTitleAddress    DC.B        '  Address',0
  1766. TextSetAddress        DC.B        'Set address',0
  1767. TextPgBackwards        DC.B        'Page backwards',0
  1768. TextPgForewards        DC.B        'Page forewards',0
  1769. MenuTitleSearch        DC.B        '  Search',0
  1770. TextSearch        DC.B        'Ascii string',0
  1771. TextWord        DC.B        'Hex word',0
  1772. TextLongWord        DC.B        'Hex long word',0
  1773. TextTask        DC.B        'Task by name',0
  1774. TextTask2        DC.B        'Task name',0
  1775. TextRepeat        DC.B        'Repeat search',0
  1776. IntName            DC.B        'intuition.library',0
  1777. GfxName            DC.B        'graphics.library',0
  1778. *DosName        DC.B        'dos.library',0
  1779.             EVEN
  1780.  
  1781. ******************** Subroutine Quit *******************************************
  1782.  
  1783. Quit            ADDQ.W        #4,A7
  1784.             TST.B        Flags(A4)
  1785.             BEQ.S        NoUnLock
  1786.             MOVE.L        DosBase(A4),A6
  1787.             MOVE.L        SaveLock(A4),D1
  1788.             JSR        UnLock(A6)
  1789. NoUnLock        MOVE.L        WW1(A4),A0
  1790.             MOVE.L        IntBase(A4),A6
  1791.             JSR        ClearMenuStrip(A6)
  1792.             MOVE.L        WW1(A4),A0
  1793.             JSR        CloseWindow(A6)
  1794. FreeMemory        LEA        RememberKey(PC),A0
  1795.             MOVEQ        #1,D0
  1796.             JSR        FreeRemember(A6)
  1797. CloseAllLibs        MOVE.L        4.W,A6
  1798.             MOVE.L        IntBase(A4),A1
  1799.             JSR        CloseLibrary(A6)
  1800. CloseGfx        MOVE.L        GfxBase(A4),A1
  1801.             JMP        CloseLibrary(A6)
  1802. *            JSR        CloseLibrary(A6)
  1803. *CloseDos        MOVE.L        DosBase(A4),A1
  1804. *            JSR        CloseLibrary(A6)
  1805. *GetOut            UNLK        A4
  1806. *            MOVEQ        #0,D0
  1807. *            RTS
  1808.  
  1809. EndProgram        
  1810. *            DCB.B        732,0
  1811. ImageSlider        EQU        EndProgram
  1812. DirBuffer        EQU        EndProgram+20
  1813. FileBuffer        EQU        EndProgram+121
  1814. TextImage        EQU        EndProgram+152
  1815. SearchBuffer        EQU        EndProgram+584
  1816. SaveLengthBuffer    EQU        EndProgram+687
  1817. PatternBuffer        EQU        EndProgram+694
  1818. LengthBuffer        EQU        EndProgram+701
  1819. ByteBuffer        EQU        EndProgram+708
  1820. WordBuffer        EQU        EndProgram+711
  1821. LongBuffer        EQU        EndProgram+716
  1822. SetAddressBuffer    EQU        EndProgram+725
  1823.  
  1824. ******************** End of program ********************************************
  1825.